package com.example.handler;

import com.example.model.FraudRiskResult;
import com.example.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * 中风险处理器
 * 处理评分在30-70之间的中风险案例
 * 
 * @author system
 */
@Component
@Order(2)
@RequiredArgsConstructor
@Slf4j
public class MediumRiskHandler implements RiskHandler {

  private final UserService userService;

  @Override
  public boolean canHandle(FraudRiskResult result) {
    return result.getRiskLevel() == 1; // 中风险
  }

  @Override
  public void handle(FraudRiskResult result) {
    if (!canHandle(result)) {
      return;
    }

    log.info("处理中风险案例，用户地址：{}，风险评分：{}", result.getUserAddress(), result.getScore());

//    // 1. 增加用户风险标记
    userService.markAsRisky(result.getUserAddress());

    // 2. 限制部分敏感操作
    userService.limitSensitiveOperations(result.getUserAddress());

    // 3. 记录风险信息
    log.warn("发现中风险行为，已限制部分敏感操作，用户地址：{}", result.getUserAddress());
  }

  @Override
  public int getOrder() {
    return 2; // 中风险次优先处理
  }
}